Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

300
Visualizações
"Error de segmentación" cuando `rmmod` o `modprobe -r`

Probar el módulo de kernel más simple de LDD3 sin ninguna modificación en el kernel personalizado v4.1.0-rc6 para la placa Beagle Bone con BusyBox v1.23.0. El código del módulo es el siguiente:

 #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit);

El archivo Make es:

 ARCH := arm CROSS_COMPILE := arm-cortex_a8-linux-gnueabi- obj-m := hello.o all: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) modules clean: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) clean

El módulo se está compilando e instalando en rootfs sin problemas. también está cargando:

 $ insmod hello.ko [ 30.692404] Hello, world

Pero al intentar eliminarlo, me sale:

 $ rmmod hello.ko Segmentation fault $modprobe -r hello.ko Segmentation fault $ lsmod hello 813 0 - Live 0xbf000000 (O)

El kernel está compilado con el soporte de descarga de módulos (tanto regular como forzado) habilitado.

¿Cuál puede ser la posible causa de este problema? ¿Cuál es la forma de abordar la investigación de la misma?

Actualizar:

Como se sugiere en los comentarios, he intentado incluir linux/kernel.h , definiendo los símbolos MODULE , LINUX y __KERNEL__ . Se agregaron los prefijos __init y __exit a las funciones. Se eliminaron los modificadores static . Se eliminaron las líneas de printk . El resultado el mismo. dmesg muestra solo el saludo inicial. Sorprendentemente, la carga y descarga de los módulos del kernel, como gpio_keys o crypto/ccm , funciona. Entonces, lo único que queda por sospechar es la forma en que se compila el módulo.

Actualización 2
Actualizar el kernel a la instantánea más reciente no ayudó. Compilado el módulo con diferentes configuraciones de optimización no ayudó. El siguiente paso, supongo, voy a modificar el rmmod de BusyBox para tener alguna indicación de la ubicación del problema.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Echa un vistazo a estos tutoriales:

http://www.tldp.org/HOWTO/Module-HOWTO/x839.html http://www.tldp.org/LDP/lkmpg/2.4/html/x281.htm

Intenta agregar:

 #define MODULE #define LINUX #define __KERNEL__ #include <linux/kernel.h> /* Needed for KERN_ALERT */
over 4 years ago · Santiago Trujillo Relatório

0

Me las he arreglado para solucionar este problema. Usando strace , descubrí que la falla de segmento está ocurriendo en algún lugar al read el archivo modules.dep.bb específico de BusyBox . BusyBox utiliza este archivo cuando se compila con la opción "Modutils simplificados" ( CONFIG_MODPROBE_SMALL ). Al deshabilitar la opción, seleccionar las utilidades que se instalarán y reconstruir BusybBox, obtuve el trabajo de descarga del módulo. Creo que la raíz del problema está cerca del hecho de que el módulo de prueba se compila y almacena fuera del directorio /lib/..../modules , por lo que la modutils busybox se está confundiendo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda